package com.example;

public class Test {

    @org.junit.Test
    public void test01() {
        /* 抽象类在创建对象时，需要实现方法，不推荐 */
        A a = new A() {
            @Override
            void fun2() {
                System.out.println(1);
            }

            @Override
            void fun3() {
                System.out.println(2);
            }
        };
        A a1 = new A() {
            @Override
            void fun2() {
                System.out.println(3);
            }

            @Override
            void fun3() {
                System.out.println(4);
            }
        };
        D d = new D();
        A d1 = new D();
    }

    @org.junit.Test
    public void test02() {
        F f1 = new G(); // 对象多态
        f1.fun03(); // 逻辑1，方法多态

        F f2 = new D(); // 对象多态
        f2.fun03(); // 逻辑2，方法多态
        System.out.println(1); // 方法重载也可以理解为多态
        System.out.println("123");
    }
}
